#include "MathUtils.h"

#include <cmath>

namespace D3D10Utils
{
    // Returns the polar angle of the point (x,y) in [0, 2 * PI).
    float AngleFromXY(const float x, const float y)
    {
        float theta = 0.0f;

        // Quadrant I or IV
        if (x >= 0.0f) 
        {
            // If x = 0, then atanf(y/x) = +pi / 2 if y > 0
            //                atanf(y/x) = -pi / 2 if y < 0
            theta = atanf(y / x); // in [-pi / 2, +pi / 2]

            if(theta < 0.0f)
                theta += 2.0f * PI; // in [0, 2 * pi).
        }

        // Quadrant II or III
        else      
            theta = atanf(y / x) + PI; // in [0, 2 * pi).

        return theta;
    }
}